package app.engine.solucoes.request.command;

import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import app.engine.solucoes.request.beans.Usuario;
import app.engine.solucoes.request.dao.AppDAO;
import app.engine.solucoes.request.exception.CommandException;

public class GetAllUserCommand implements Command {

	private String next;
	
	public GetAllUserCommand(String next) {
		super();
		this.next = next;
	}

	@Override
	public String execute(HttpServletRequest req) throws CommandException {
		
		try {
			Usuario usuarioSessao = (Usuario) req.getSession().getAttribute("usuario");
			Long empresaModerador = usuarioSessao.getEmpresa();
			if (empresaModerador == null) {
				req.setAttribute("faqtool.msg", "Moderador sem empresa<br />" +
				" cadastrada comunique ao administrador<br /> do sistema.");
				req.setAttribute("corFonte","red");
				return "/pages/menu.jsp";
			}
			
			AppDAO dao = new AppDAO();
			List<Object> usuarios = dao.selectAll(Usuario.class);
			if (usuarioSessao.getLogin().equals("administrador")) {
				for (Iterator<Object> iterator = usuarios.iterator(); iterator.hasNext();) {
					Usuario usuario = (Usuario) iterator.next();
					if (!usuario.getNomeUsuario().contains("Empresa")) {
						iterator.remove();
					}
				}
			} else {
				for (Iterator<Object> iterator = usuarios.iterator(); iterator.hasNext();) {
					Usuario usuario = (Usuario) iterator.next();
					Long empresaUsuario = usuario.getEmpresa();
					if (empresaUsuario != null && !usuario.getEmpresa().equals(empresaModerador) || usuario.getNomeUsuario().contains("Empresa")) {
						iterator.remove();
					}
				}
				
			}
			req.setAttribute("usuarios", usuarios);
			return next;
		} catch (Exception fe) {
			throw new CommandException("GetCommand: " + fe.getMessage());
		}
	}

}
